package com.ybkj.o2o.sales.service;

import com.ybkj.o2o.sales.entity.Activity;
import com.ybkj.o2o.sales.entity.Activity.ActivityEvent;
import com.ybkj.o2o.sales.entity.CouponRule;

import java.util.List;

public interface ActivityService {
  /**
   * 创建活动.
   * 
   * @param activity 活动内容
   * @return Long
   */
  Long insert(Activity activity);

  /**
   * 删除活动.
   * 
   * @param id 活动id
   * @param appKey 系统key
   */
  void delete(Long id, String appKey);

  /**
   * 修改活动.
   * 
   * @param activity 活动内容
   */
  int update(Activity activity);


  /**
   * 查询单个活动.
   * 
   * @param id 活动id
   * @param appKey 系统key
   * @return Activity
   */
  Activity findOne(Long id, String appKey);

  /**
   * 分页查询活动.
   * 
   * @param companyId 公司id
   * @param activityEvent 活动事件
   * @param activityType 活动类型
   * @param offset 页数
   * @param size 每页数量
   * @return List
   */
  List<Activity> selectActivities(Long companyId, String activityEvent, String activityType,
      Integer offset, Integer size, String appKey);

  /**
   * 分页查询所有活动.
   * 
   * @param companyId 公司id
   * @param offset 页数
   * @param size 每页数量
   * @return List
   */
  List<Activity> selectAllActivities(Long companyId, Integer offset, Integer size, String appKey);

  /**
   * 统计活动数量.
   * 
   * @param companyId 公司id
   * @param activityEvent 活动事件
   * @param activityType 活动类型
   * @param appKey 系统key
   * @return Long
   */
  Long countActivities(Long companyId, String activityEvent, String activityType, String appKey);

  /**
   * 统计所有活动数量.
   * 
   * @param companyId 公司id
   * @param appKey 系统key
   * @return Long
   */
  Long countAllActivities(Long companyId, String appKey);

  /**
   * 根据活动事件查询活动.
   * 
   * @param activityEvent 活动事件
   * @param appKey 系统key
   * @return List
   */
  List<Activity> listValidByEvent(ActivityEvent activityEvent, String appKey);

  List<Activity> activityList(ActivityEvent activityEvent, Long[] linesId, String appKey);

  /**
   * 停止活动活动.
   * 
   * @param id 活动id
   * @param appKey 系统key
   */
  void stop(Long id, String appKey);

  /**
   * 输入手机号领取优惠券.
   * 
   * @param phone 手机号
   * @param couponRule 优惠券规则
   * @param amount 优惠券数量
   * @param appKey 系统key
   */
  public void phoneCoupon(String phone, CouponRule couponRule, Integer amount, String appKey);

  /**
   * 根据公司id查询首单免费活动.
   * 
   * @param companyId 公司id
   * @param activityEvent 活动事件
   * @param appKey 系统key
   * @return List
   */
  public List<Activity> findOneFreeActivity(Long companyId, ActivityEvent activityEvent,
      String appKey);


}
